package com.me.plugin

object AppVersion {
    const val versionCode = 1
    const val versionName = "0.0.1"
}

object BuildVersion {
    const val compileSdk = 31
    const val minSdk = 23
    const val targetSdk = 31
}

object Deps {

    //kotlin
    const val kotlinVersion = "1.5.21"
    const val kotlinLib = "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
    const val kotlinReflect = "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"

    //kotlin 协程 https://github.com/Kotlin/kotlinx.coroutines
    private const val kotlinCoroutines = "1.5.1"
    const val kotlinCoroutinesAndroid = "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinCoroutines"
    const val kotlinCoroutinesCore = "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinCoroutines"

    // Android 官方库 https://maven.google.com/web/index.html
    const val coreKtx = "androidx.core:core-ktx:1.5.0"
    const val appcompat = "androidx.appcompat:appcompat:1.3.1"
    const val constraintlayout = "androidx.constraintlayout:constraintlayout:2.1.0"
    const val multidex = "androidx.multidex:multidex:2.0.1"
    const val legacy = "androidx.legacy:legacy-support-v4:1.0.0"
    const val material = "com.google.android.material:material:1.4.0"
    const val annotation = "androidx.annotation:annotation:1.1.0"
    const val recyclerview = "androidx.recyclerview:recyclerview:1.1.0"
    const val viewpager2 = "androidx.viewpager2:viewpager2:1.0.0"
    const val fragmentKtx = "androidx.fragment:fragment-ktx:1.3.4"
    const val cardview = "androidx.cardview:cardview:1.0.0"

    // - FlexboxLayout -- https://github.com/google/flexbox-layout
    const val flexbox = "com.google.android:flexbox:2.0.1"

    //Lifecycle
    private const val lifecycleVersion = "2.3.1"
    const val lifecycleRuntime = "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion"
    const val lifecycleViewModel = "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion"
    const val lifecycleLiveData = "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleVersion"
    const val lifecycleSavedState = "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycleVersion"
    const val lifecycleCompiler = "androidx.lifecycle:lifecycle-compiler:$lifecycleVersion"
    const val lifecycleProcess = "androidx.lifecycle:lifecycle-process:$lifecycleVersion"
    const val lifecycleService = "androidx.lifecycle:lifecycle-service:$lifecycleVersion"
    const val lifecycleJava8 = "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"

    //room
    const val roomVersion = "2.3.0"
    const val roomRuntime = "androidx.room:room-runtime:$roomVersion"
    const val roomCompiler = "androidx.room:room-compiler:$roomVersion"
    const val roomKtx = "androidx.room:room-ktx:$roomVersion"
    const val roomTesting = "androidx.room:room-testing:$roomVersion"

    const val workManagerVersion = "2.5.0"
    const val workerManagerRuntime = "androidx.work:work-runtime:$workManagerVersion"
    const val workerManagerKtx = "androidx.work:work-runtime-ktx:$workManagerVersion"
    const val workerManagerTest = "androidx.work:work-testing:$workManagerVersion"

    // DataStore https://developer.android.com/topic/libraries/architecture/datastore?hl=zh-cn
    const val dataStoreVersion = "1.0.0-rc01"
    //dataStore
    const val dataStore = "androidx.datastore:datastore:$dataStoreVersion"
    //Preferences DataStore
    const val datastorePreferences = "androidx.datastore:datastore-preferences:$dataStoreVersion"
    // Proto DataStore
    const val dataProto = "androidx.datastore:datastore-core:$dataStoreVersion"
    const val protobufLite = "com.google.protobuf:protobuf-javalite:3.10.0"

    // - Retrofit2 -- https://github.com/square/retrofit/releases
    const val retrofitVersion = "2.9.0"
    const val retrofitRuntime = "com.squareup.retrofit2:retrofit:$retrofitVersion"
    const val retrofitGson = "com.squareup.retrofit2:converter-gson:$retrofitVersion"

    // - okhttp -- https://github.com/square/okhttp
    const val okhttpVersion = "4.9.1"
    const val okhttpRuntime = "com.squareup.okhttp3:okhttp:$okhttpVersion"
    const val okhttpLogging = "com.squareup.okhttp3:logging-interceptor:$okhttpVersion"

    // -- 通用工具 -- https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README-CN.md
    const val utilCodex = "com.blankj:utilcodex:1.30.6"

    // - XPopup -- https://github.com/li-xiaojun/XPopup/
    const val xpopup = "com.github.li-xiaojun:XPopup:2.5.3"

    // 图片加载 -- https://github.com/coil-kt/coil
    const val coil = "io.coil-kt:coil:1.2.2"

    // -- RecyclerViewAdapter https://github.com/CymChad/BaseRecyclerViewAdapterHelper
    const val adapterHelper = "com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4"

    const val hokoBlur = "com.hoko:hoko-blur:1.3.5"
    const val hokoBlurDrawable = "com.hoko:blur-drawable:0.0.1"

    //LiveEventBus https://github.com/JeremyLiao/LiveEventBus
    const val liveEventBus = "io.github.jeremyliao:live-event-bus-x:1.8.0"

    const val fastJson = "com.alibaba:fastjson:1.2.73"

    //AutoSize https://github.com/JessYanCoding/AndroidAutoSize
    const val autoSize = "com.github.JessYanCoding:AndroidAutoSize:v1.2.1"

    private const val refreshVersion = "2.0.1"
    const val refreshRuntime = "com.scwang.smart:refresh-layout-kernel:$refreshVersion"
    const val refreshHeaderClassics= "com.scwang.smart:refresh-header-classics:$refreshVersion"
    const val refreshFooterClassics= "com.scwang.smart:refresh-footer-classics:$refreshVersion"

    const val freeReflection = "me.weishu:free_reflection:3.0.1"

    const val mmkv = "com.tencent:mmkv-static:1.2.7"

    //mqtt
    const val mqttClient = "org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0"
    const val mqttService = "org.eclipse.paho:org.eclipse.paho.android.service:1.1.1"

    private const val glideVersion = "4.12.0"
    const val glideRuntime = "com.github.bumptech.glide:glide:$glideVersion"
    const val glideCompiler = "com.github.bumptech.glide:compiler:$glideVersion"

    const val junit = "junit:junit:4.13.2"
    const val junitAndroid = "androidx.test.ext:junit:1.1.2"
    const val espressoCode = "androidx.test.espresso:espresso-core:3.3.0"

    //RxPermissions: https://github.com/tbruyelle/RxPermissions
    const val permissions = "com.github.tbruyelle:rxpermissions:0.12"

    //PermissionsDispatcher https://github.com/permissions-dispatcher/PermissionsDispatcher
    private const val permissionVersion = "4.9.1"
    const val permissionDispatcherRuntime = "com.github.permissions-dispatcher:permissionsdispatcher:$permissionVersion"
    const val permissionDispatcherProcessor =  "com.github.permissions-dispatcher:permissionsdispatcher-processor:$permissionVersion"

    const val wifiUtils = "com.thanosfisherman.wifiutils:wifiutils:1.6.5"

    const val exoPlayer = "com.google.android.exoplayer:exoplayer:2.12.3"

    //二维码 https://github.com/bingoogolapple/BGAQRCode-Android
    const val zxing = "com.github.bingoogolapple.BGAQRCode-Android:zxing:1.3.8"

}